package com.zsc.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;


/**
 * 订单表
 *
 * @TableName orders
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("orders")
public class Orders implements Serializable {

    /**
     * 订单状态 0未完成 1已完成
     */
    public static final Integer UNCOMPLETED = 0;
    public static final Integer COMPLETED = 1;

    /**
     * 主键
     */
    @NotNull(message = "[主键]不能为空")
    @ApiModelProperty("主键")
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 订单号
     */
    @Size(max = 50, message = "编码长度不能超过50")
    @ApiModelProperty("订单号")
    private String number;
    /**
     * 订单状态 0未完成 1已完成
     */
    @NotNull(message = "[订单状态 0未完成 1已完成]不能为空")
    @ApiModelProperty("订单状态 0未完成 1已完成")
    private Integer status;
    /**
     * 下单用户
     */
    @NotNull(message = "[下单用户]不能为空")
    @ApiModelProperty("下单用户")
    private Long userId;
    /**
     * 地址id
     */
    @NotNull(message = "[地址id]不能为空")
    @ApiModelProperty("地址id")
    private Long addressBookId;
    /**
     * 下单时间
     */
    @NotNull(message = "[下单时间]不能为空")
    @ApiModelProperty("下单时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime orderTime;
    /**
     * 实收金额
     */
    @NotNull(message = "[实收金额]不能为空")
    @ApiModelProperty("实收金额")
    private BigDecimal amount;
    /**
     * 备注
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("备注")
    private String remark;
    /**
     * 手机号
     */
    @Size(max = 11, message = "编码长度不能超过11")
    @ApiModelProperty("手机号")
    private String phone;
    /**
     * 地址
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("地址")
    private String address;
    /**
     * 用户名称
     */
    @Size(max = 32, message = "编码长度不能超过32")
    @ApiModelProperty("用户名称")
    private String userName;
    /**
     * 收货人
     */
    @Size(max = 32, message = "编码长度不能超过32")
    @ApiModelProperty("收货人")
    private String consignee;

}
